import os


# 定义一个函数，用于获取指定文件夹及其子文件夹下的所有非隐藏文件
def get_all_files_in_folder(folder_path):
    # 初始化一个空列表，用于存储找到的文件路径
    file_list = []
    # 初始化一个空列表，用于存储需要排除的目录（即隐藏目录）
    anon_dirs = []
    # 使用 os.walk() 函数遍历指定文件夹及其子文件夹
    # root 表示当前正在遍历的目录路径
    # dirs 表示当前目录下的所有子目录列表
    # files 表示当前目录下的所有文件列表
    for root, dirs, files in os.walk(folder_path):
        # 检查当前目录是否在需要排除的目录列表中
        if root in anon_dirs:
            # 如果当前目录在需要排除的目录列表中，将当前目录下的所有子目录添加到需要排除的目录列表中
            anon_dirs.extend([os.path.join(root, dir) for dir in dirs])
        else:
            # 如果当前目录不在需要排除的目录列表中，将当前目录下以点号开头的子目录（隐藏目录）添加到需要排除的目录列表中
            anon_dirs.extend([os.path.join(root, dir) for dir in dirs if dir.startswith('.')])

        # 再次检查当前目录是否在需要排除的目录列表中
        if root in anon_dirs:
            # 如果当前目录在需要排除的目录列表中，跳过当前目录及其子目录，继续下一次循环
            continue
        # 遍历当前目录下的所有文件
        for file in files:
            # 检查文件是否不以点号开头（即非隐藏文件）
            if not file.startswith('.'):
                # 如果文件是非隐藏文件，将文件的完整路径添加到文件列表中
                file_list.append(os.path.join(root, file))
    # 返回包含所有非隐藏文件路径的列表
    return file_list
